package fr.upmc.mdoc.tp1.domain;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

import fr.upmc.mdoc.tp1.models.ContactGroup;
import fr.upmc.mdoc.tp1.tools.HibernateUtil;

public class DAOContactGroup {
	private Session session;
	private Transaction tx;

	public DAOContactGroup() {
		session = HibernateUtil.getSessionFactory().openSession();
	}

	@SuppressWarnings("unchecked")
	public List<ContactGroup> getGroups() {
		System.out.println("Retourne la liste des groupes de contacts");
		tx = session.beginTransaction();

		// Récupération des contacts depuis la base de donnée
		List<ContactGroup> groups = (List<ContactGroup>) session.createQuery(
				"from ContactGroup").list();

		/*
		 * Query query = (Query) session.createQuery("delete ContactGroup");
		 * query.executeUpdate();
		 */
		tx.commit();

		return groups;

	}

	//TODO A Revoir
	@SuppressWarnings("unchecked")
	public List<ContactGroup> getGroups(int idContact) {

		List<ContactGroup> groups = (List<ContactGroup>) session.createQuery(
				"from ContactGroup g " +
				"where contactId=all elements(g.contacts)").list();

		tx.commit();

		return groups;
	}

	public boolean updateGroup(ContactGroup group) {
		tx = session.beginTransaction();

		// Mis à jour d'un groupe
		session.update(group);

		tx.commit();

		return true;
	}

}
